package cate.game.client.msg;

import cate.game.role.Role;

public abstract class MergeMsgOutput<T> implements MsgOutput {
    public int ordinal() {
        return Integer.MAX_VALUE;
    }
    /**
     * 执行融合
     *
     * @return 是否融合成功
     */
    public abstract boolean merge(T another);

    public void sendNow(Role role) {
        if (!roleOK(role)) {
            return;
        }
        role.getCc().sendNow(this);
    }

    public void send(Role role) {
        if (!roleOK(role)) {
            return;
        }
        role.getCc().send(this);
    }

    private boolean roleOK(Role role) {
        if (role == null) {
            return false;
        }
        return role.getCc() != null && !role.entering;
    }

    /** 发送给网关上在线的所有玩家 */
    public void sendAll() {
//        Game.master.holder.activeForOnline(
//                m -> {
//                    this.sendNow(m);
//                });
    }
}
